home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 11 / FM Towns Free Software Collection 11.iso / t_os / data / dora / doramain.plt < prev    next >
Text File  |  1995-08-16  |  47KB  |  1,673 lines

  1. /*******************************************************************
  2. *   RT-BBS NET専用MOPTERMオートパイロットDORAV1.10E               *
  3. *   All Right Reserved, Copyright(c) モップ               *
  4. *            (Masahiro Kezuka    NIFTY-ID PFF00570)     *
  5. *   All Right Reserved, Copyright(c) Yama-chan    1992          *
  6. *            (Hiroaki Yamada        NIFTY-ID PEE01244)     *
  7. *   All Right Reserved, Copyright(c) DORAGON    1992               *
  8. *                       (Kouji Koumura      NIFTY-ID GBH00541      *
  9. *                                           TGK-NET  TGK0013       *
  10. *                                           ITY-NET  ITYT0023)     *
  11. *   All Right Reserved, Copyright(c) Take       1993               *
  12. *                       (Masamichi Takemoto NIFTY-ID GHA00253      *
  13. *                                           ITY-NET  ITYT0001)     *
  14. *  All Right Reserved, Copyright(c) LRA.    1994          *
  15. *            (Wataru Ohmukai       NIFTY-ID HGG03505)     *
  16. *   All Right Reserved, Copyright(c)FAPX作者グループ(DORA移植元)   *
  17. *    -なる-☆、フェイス、えんでん、コノミ、雅び、Omohyoideus   *
  18. *   With                           *
  19. ********************************************************************/
  20. /*    DORAのV/L    */
  21. %VerLev{1.10E};%VL    {110};
  22. /*    DEBUG MODE    */
  23. %DEBUG    {No};
  24. /*    MOPTERMのバージョン    */
  25. %mopver @tail(@version,{for },{ });
  26.  
  27. /*    MOPTERM/WinのデフォルトPortNo.    */
  28. %PortNo    @case    (mopver,
  29.         {Win31},
  30.         {im(@INIGet({MOPTERM.INI},{MopTerm},{DefaultPort}))},
  31.         ,{im({})}
  32.         );
  33. /*******************************************************************
  34. *  RTBBS-NET専用MOPTERMオートパイロットDORAMAIN.PLT(メイン処理 )   *
  35. ********************************************************************
  36. 動作確認●・ FMTOWNSII-MX,(増設RAM8MB),外付けH/D
  37.        MICROCORE MC14400FX &
  38.        OMRON MD96FB5V
  39.       ・  FMTOWNS20F,内付けH/D、クロスケーブル接続
  40.           OMRON MD24FP5
  41.      ・ FMTOWNS2F    ,(6MB増設),外付けH/D
  42.        MICROCORE MC24PA5
  43.      ・ FMTOWNSCX20  ,(8MB増設),外付けH/D
  44.        PM2400F2(富士通)
  45.     システムソフト v2.1 L40, MopTerm/T-OS v2.03i
  46.     WINDOWS v3.1 L12, MopTerm/Win   v0.24j
  47.  
  48. 対応確認済HOSTシステム
  49.  ・The resource版 Turbo-BBS  ver5.3βa
  50.  ・The resource版 Turbo-BBS  ver5.3βb FINAL
  51.  ・The resource版 Turbo-BBS  ver5.3βb Extension 2
  52.   ・The resource edition Turbo-BBS  ver5.3βb FINAL! ITY-Net 版
  53.  ・KMF Independent Forum System Based RTBBS  Ver.0.14
  54.  ・Joyful Communication Network System ("The resource版 Turbo-BBS"改造)
  55.   ・The resouce版 turbo-BBS を改編した "なっとぉ版 Turbo-BBS
  56.   ・K.F.C.版 RT-BBS  ver5.3βb+.02 FINAL!
  57.   ・ミンキームーンネット版RTBBS  Pちゃんヴァージョン
  58.  ・The resourse edition Turbo-BBS ver5.3βb改MNK's BBS 版
  59.  ・The_BEAT-NET版Turbo-BBS Ver3.3 for RTBBS
  60.  ・The resourse版 Turbo-BBS を改造した MINA-NET用ヴァージョン
  61.  ・The resource edition Turbo-BBS  ver5.3βb 改MagicDragon Custom Rev 1.4
  62.  ・The resource版 Turbo-BBS  DIGITAL-BBS版 FINAL! 
  63.  ・The resourse版 Turbo-BBS を改造した AOI-NET用ヴァージョン
  64.  ・Neuro Arranged RT-BBS Rel.1-01 やぎネット専用版
  65.  ・virsiron   :PAO net edition Turbo-BBS(k) TTBBS(k) ver 2.91
  66.  ・SSS-NET版 [ UNIT:STBBS ]  ver1.0c 
  67.  
  68. * 定数・変数領域の指定 */
  69. /*    ID & PASSWORD    */
  70. var ID    [8];
  71. var PassWord[8];
  72. var HanDLe[16];
  73. /*    アクセスユ-ザ-確認後アクセス中ならばトークする会員ID */
  74. var TalkID1[20];var TalkID2[20];var TalkID3[20];var TalkID4[20];
  75. var TalkID5[20];var TalkID6[20];var TalkID7[20];var TalkID8[20];
  76. var TalkID9[20];var TalkID10[20];var TalkID11[20];var TalkID12[20];
  77. var TalkID13[20];var TalkID14[20];var TalkID15[20];var TalkID16[20];
  78. var TalkID17[20];var TalkID18[20];var TalkID19[20];var TalkID20[20];
  79. var CMt1[50];var CMt2[50];var CMt3[50];var CMt4[50];var CMt5[50];
  80. var CMt6[50];var CMt7[50];var CMt8[50];var CMt9[50];var CMt10[50];
  81. var CMt11[50];var CMt12[50];var CMt13[50];var CMt14[50];var CMt15[50];
  82. var CMt16[50];var CMt17[50];var CMt18[50];var CMt19[50];var CMt20[50];
  83. /*    電話番号    */
  84. var ROAD [80];var ROAD2[80];var ROAD3[80];var ROAD4[80];
  85. var sROAD[80];/* 接続電話番号*/
  86.  
  87. var GEN [3];var GEN2[3];var GEN3[3];var GEN4[3];
  88. var CALL[4];    /* 接続手順の設定   */
  89. var REDIALt[2];  /* 再リダイアル間隔の設定 */
  90. /*モデムコマンド及びダイアルタイプ    */
  91. var    MODEM    [60];var    DIAL    [1];
  92. /* ディレクトリ    */
  93. var    TEMP    [64];var    LOG    [128];var    UP    [64];
  94. var    SOUND    [64];var    TEMP2    [64];var    LOG2    [64];
  95. var    SOUND2    [64];var    UP2    [64];var    FSW    [64];
  96. var    RTTLdir    [64];var    RTTL2    [64];var    VIEWLOG    [64];
  97. var    NPSDIR    [64];
  98.  
  99. /*    COMMAND.COMドライブ名    */
  100. var    COMDRV    [30];        /*空き*/
  101. /*    ファイルパス名    */
  102. var    RTTLC    [64];var    MEMBER    [64];
  103. /*    ログファイル作成モード    */
  104. var    LOGmode    [8];
  105. /*    NETの名称   */
  106. var    NET    [6];var    NETname    [40];
  107. /*    みかか代計算データ   */
  108. var    AcP    [12];var    AcPNo    [1];
  109. /*    プロトコルの設定(T-OS)    */
  110. var    binop    [1]; /*プロトコルオプション実行*/
  111. /*(T-OS)*/
  112. var    TBINty    [16]; /*プロトコル*/
  113. var    TBINop    [1]; /*空*/
  114. /*(Win)*/
  115. var    BINty    [16]; /*プロトコル*/
  116. /*B-MAILコマンド*/
  117. var    BINop    [2]; /*例「Z]or「MB」しかしネット毎に違う*/
  118. /*○○○-NETにおける処理    */
  119. var    TGK    [1536];
  120. /*    画面背景色    */
  121. var    R    [3];var    G    [3];var    B    [3];
  122. /* オプションスイッチ */
  123. var    BELFIL    [64];var    VBELL    [3];var    NATTOU    [3];
  124. var    CLICK    [3];var    TAB    [2];var    LOCK    [3];
  125. var    OAK    [5];
  126. var    HOSEI    [3];    /*Noで複数ネット選択メニュー表示中止*/
  127. var    HedFut    [3];    /*ヘッド&フッタの種類の設定*/
  128. var    Futless    [3];    /*フッタレスOPTの設定*/
  129. var     INFO    [3];
  130. var     DIVE    [3];
  131. var     STYPE    [1];
  132. var     DORD    [1];
  133. var     FORD    [1];
  134. var     aftLOG    [3];    /*OPTでアップ後クリア*/
  135. var     freLOG    [3];    /*OPTで巡回ログマージ*/
  136.  
  137. /* 設定ファイルのパス名 */
  138. var    SETFILE    [64];var    TGKFILE    [64];
  139. var    SETFILE1[64];var    SETFILE2[64];
  140. /* オンライン処理フラグ */
  141. var    DORTBBS    [3];
  142. var    BmalON    [3];    /* バイナリメールON S/W */
  143. var    DOBMAIL    [3];
  144. var    BMALDEL    [3];
  145. var    BMALRED    [3];
  146. var    DelBML    [5];
  147. var    MAILDEL    [3];
  148. var    MAILRED    [3];
  149. var    DelML    [5];
  150. var    FUTA    [40];    /* 専用のフッタ情報 */
  151. var    afMEMO    [32];    /* 通信後に登録するメモの内容 */
  152. var    PLTmemo    [3];    /* up時「w」メモフラグ    */
  153. var    REDIAL    [4];
  154. var    START    [3];
  155. var    AP3    [3];
  156. var    WHO    [5];
  157. var    mPOINT    [8];
  158. var    LGLOOK    [3];
  159. var    MACTIV    [8];
  160. var    BDLIST    [3];
  161. var    DLLIST    [3];
  162. var    FREE1    [3];
  163. var    JISAR    [3];
  164. var    ESCon    [3];
  165. var    moveline[4];
  166.  
  167.  
  168. /*    各種設定フラグ    */
  169. var    OPENING    [3];    /*    オープニング画面表示    */
  170. var    DORAEND    [8];    /*    自動通信終了時処理    */
  171. var    UPDOWN    [5];
  172. var    FMGR    [64];    /*    ファイルマネージャパイロットファイル名    */
  173. var    genteiT    [3];    /* アクセス時間限定フラグ    */
  174. var    LimiT    [4];    /* 極悪改造ネット対応フラグ    */
  175. var    FlyLine    [1];    /* エコーバック行数の指定    */
  176. var    FLG    [6];    /* Returnフラグの指定    */
  177. /*    変数の定義    */
  178. var     sROAD    [80];    /* チャンネル変更    */
  179. var    openT    [2];    /* RT-BBS開局時間    */
  180. var    closeT    [2];    /* RT-BBS閉局時間    */
  181. var    AM3    [6];    /* ログイン時フラグ    */
  182. var    loginMODE[7];    /* USER ID入力からSTARTフラグ    */
  183. var    ACCESS    [5];    /* 通信開始時刻    [HH:MM]    */
  184. var    liblist    [300];    /* ライブラリ番号リスト    */
  185. var    IDlist    [80];    /* 爆裂トークIDリスト    */
  186. var    Btitle    [3];    /* タイトルから読みたいボードのログを指定    */
  187. var    endWD    [2];    /* 伝言板 or 最後の一言での 終了コマンド    */
  188. /* RTTLC関連の設定 */
  189. var    RTop    [64];    /* RTTLCコマンドopt*/
  190. var    RTcfg    [55];    /* RTTLC CFG dir*/
  191. var Dble[3];var mop[3];var lop[3];var gop[3];/*RT CFG opt関係*/
  192. var Top[3];var Mop[3];var Gop[3];var Lop[3];var Kop[3];
  193. var Rop[64];var MorL[3];var Nbrd[60];var mes[60];var DeLog[3];
  194. var bop[3];/*未使用*/
  195.  
  196. /* ウェイト時間の設定 */
  197. %Wtime1    10;        /* モデム応答待ち時間        */
  198. %Wtime2    60;%Wtime3 90;%Wtime5 180;    /* RTBBS-NETプロンプト待ち時間    */
  199. %Wtime4    60;        /* select入力待ち時間        */
  200. %WtimeD    3600;        /* ダウンロード終了待ち時間の限定    */
  201. %WtimeU    2;        /* アップロード準備待ち時間の限定    */
  202. var    BELL    [1];    /*    ベルコード    */
  203. /*    復帰改行コード    */
  204. %CRLF    @xc({0d})|@xc({0a});
  205. %CTRX    @xc({18})|@xc({18})|@xc({18})|@xc({18});
  206.  
  207. /************************************************************************
  208. *    共通処理モジュール                        *
  209. ************************************************************************/
  210. /* 音声メッセージ出力処理 */
  211. %SNDMSG    {[file]
  212.     case    (SOUND2={}||SOUND2={\},
  213.         {No},
  214.         {
  215.         var    File    [64];
  216.         case    (mopver={Win31},
  217.             {Yes},{File:=@body(file,,{.})|{.wav}},
  218.             {No},{File:=file}
  219.             );
  220.         case    (@filechk(SOUND2|File),
  221.             {Yes},    {snd(SOUND2|File)},
  222.             {No},     {display(BELL)}
  223.             )
  224.         },
  225.         {Yes},{display(BELL)}
  226.         );
  227.     };
  228. %PLTSTOP{SNDMSG({owata_f.snd});
  229.     display({\nオートパイロットDORA}|VerLev|{を停止しました\n});
  230.     stop};
  231. %AUTOEND{footnote({オートパイロットの終了処理をしています});
  232.     display(NET|{-NETとの通信を終了しました\n});
  233.     SNDMSG({owata_f.snd});
  234.     wait(2)};
  235. /* パラメタで指定されたディレクトリへ移動する(「A:\」と「A:」の両方が可能) */
  236. %setcdir2{[dir]
  237.     setcdir(@case(@nochar(dir),2,{im(dir|{\})},,{im(dir)}));
  238.     };
  239. /* 指定されたディレクトリーを(もし,無ければ)作成する。 */
  240. %mkdir2    {[dir]
  241.     %tempHLP{☆ドライブ指定不良☆
  242.  
  243.     貴方が指定された「}|dir|{」は、未登録のドライブ装置}|@getchar(dir,1,2)
  244.     |{に所属しています。
  245.     もう一度<< 各種の設定 >>→「ログファイルの設定」を行って下さい。
  246.         };
  247.     case    (@setcdir2(dir),
  248.         {No},
  249.         {
  250.         case    (@nochar(dir)==2,
  251.             {Yes},
  252.             {
  253.             display({装置(}|dir|{)が使えません。\n});
  254.             SNDMSG({okasi_f.snd});HLPview(tempHLP)
  255.             }, 
  256.             {No},
  257.             {
  258.             delfile(dir);
  259.             mkdir2(@body(dir,,{\}));
  260.             setcdir2(@body(dir,,{\}));
  261.             mkdir(@tail(dir,{\}));
  262.             });
  263.         });
  264.     };
  265. /*    ディレクトリの最終に『\』を付加する    */
  266. %dir2    {
  267.     [dir]
  268.     case    (@nochar(dir)==3,
  269.         {No},{im(dir|{\})},{Yes},{im(dir)}
  270.         );
  271.     };
  272. /*    指定ディレクトリのサブディレクトリ名を返す    */
  273. %subdir    {
  274.     [dir,sdir]
  275.     im(@dir2(dir)|sdir);
  276.     };
  277. /*    n番目の部分文字列をとりだす関数    */
  278. %nth    {[str,n,sep]    /* 元の文字列,順番,区切り文字列 */
  279.     var    str1    [@nochar(str)+1];
  280.     var    m    [@nochar(n)+1];
  281.     str1:=str;
  282.     m:=n;
  283.     loop    ({
  284.         m:=m-1;
  285.         case    (m>0,
  286.             {No},{str1:=@head(str1,sep);im({No})},
  287.             {Yes},{str1:=@body(str1,sep);im({Yes})}
  288.             );
  289.         });
  290.     im(str1);
  291.     };
  292.  
  293. /*    指定された文字列chrがstrに含まれているかどうかチェックする    */
  294. %exist    {
  295.     [str,chr]
  296.     im(@strsrch(str,chr)!=0);
  297.     };
  298.  
  299. /*    指定された文字列が含まれていればその先頭からの位置を通知する    */
  300. /*                (存在しなければ、返り値=0)        */
  301. %strsrch{
  302.     [str,chr]
  303.     %leng1    @nochar(str);
  304.     %leng2    @nochar(@head(str,chr));
  305.     case    (leng2<leng1,
  306.         {Yes},{im(leng2+1)},
  307.         {No},{im(0)}
  308.         );
  309.     };
  310. /*    文字列の置換    */
  311. %replace{
  312.     [str,old,new]
  313.     var    tmp    [@nochar(str)+@nochar(new)*10];
  314.     tmp:=str;
  315.     case    (@exist(tmp,old),
  316.         {Yes},
  317.         {
  318.         loop    ({
  319.             tmp:=@head(str,old)|new|@body(str,old);
  320.             im(@exist(tmp,old));
  321.             });
  322.         im(tmp);
  323.         },
  324.         {No},{im(str)}
  325.         );
  326.     };
  327.  
  328.  /*    Yes/Noを1/2に変換する    */
  329. %YesNo    {[YN,default];
  330.     case    (YN,
  331.         {Yes},{im({1})},{No},{im({2})},,{im(default)});
  332.     };
  333. %RESERV    {
  334.     [reserv]
  335.     case    (reserv,
  336.         { 1},{im({})},
  337.         { 2},{im({保留;})},
  338.         ,{im({})}
  339.         );
  340.     };
  341. /*    前後の空白をはぎ取る    */
  342. %strip    {
  343.     [str]
  344.     %strip1    {    /* 先頭の連続する空白を削除する */
  345.         [str]
  346.         case    (@getchar(str,1,1),
  347.             { },{im(@strip1(@getchar(str,2)))},
  348.             ,{im(str)}
  349.             );
  350.         };
  351.     %strip2    {    /* 末尾の連続する空白を削除する */
  352.         [str]
  353.         %n    @nochar(str);
  354.         case    (n,
  355.             0,{im(str)},
  356.             1,
  357.             {case(str={ },{Yes},{im({})},{No},{im(str)})},
  358.             ,
  359.             {
  360.             case    (@getchar(str,n,1),
  361.                 { },{im(@strip2(@getchar(str,1,n-1)))},
  362.                 ,{im(str)}
  363.                 );
  364.             });
  365.         };
  366.     im(@strip2(@strip1(str)));
  367.     };
  368.  
  369. /*    指定されたCUGボードのパスワードを変数TGKから検索する    */
  370. %mkPASS    {[cugBlist,Spass] var cugNo1[3];var cugNo[60];
  371.     cugNo:=cugBlist;cugPass:=Spass;
  372.     loop    ({case    (cugNo={},
  373.             {Yes},    {cugPass:=NET;im({No})},
  374.             {No},
  375.             {cugNo1:=@head(cugNo,{,});
  376.             case    (@nochar(cugNo1),
  377.                 {3},{cugNo1:=cugNo1},{2},{cugNo1:={0}|cugNo1},
  378.                 {1},{cugNo1:={00}|cugNo1}
  379.                 );
  380.             case    (cugNo1=mescan1,
  381.                 {Yes},{cugPass:=Spass;im({No})},
  382.                 {No},{cugNo:=@body(cugNo,{,});im({Yes});}
  383.                 );
  384.             })
  385.         })
  386.     };
  387. %ckPASS    {
  388.     loop    ({    n:=n+1;
  389.         %a    @getline(TGK,n,1);
  390.         case    (a={},    
  391.             {Yes},{im({No})},,
  392.             {case    (@nth(a,1,{/})={CUGボード}
  393.                 || @nth(a,1,{/})={SIGボード},
  394.                 {Yes},
  395.                 {mkPASS(@nth(a,4,{/}),@nth(a,5,{/}));im({No});},
  396.                 {No},{im({Yes})}
  397.                 )
  398.             });
  399.         });
  400.     };
  401. %SCANPW{    [mescan]
  402.     var n[3];var mescan1[3];var cugPass[8];
  403.     case    (@nochar(mescan),
  404.         {3},{mescan1:=mescan},{2},{mescan1:={0}|mescan},
  405.         {1},{mescan1:={00}|mescan}
  406.         );
  407.     case(mescan={},
  408.         {Yes},{im({})},,
  409.         {    case(@tail(TGK,{CUGボード})={}
  410.                 || @tail(TGK,{SIGボード})={},
  411.             {Yes},{im(NET)},
  412.             {No},{ckPASS;case(cugPass<>{},
  413.                     {Yes},{im(cugPass)},
  414.                     {No},{im(NET)})
  415.                 })
  416.         });
  417.     };
  418. /*    現在の日付・時刻を得る 「yyyy-mm-dd (曜) hh:mm:ss」    */
  419. %getdt    {%dt    @daylong;%week    @case    (@getchar(dt,12,3),
  420.             {Sun},{im({日})},{Mon},{im({月})},
  421.             {Tue},{im({火})},{Wed},{im({水})},
  422.             {Thu},{im({木})},{Fri},{im({金})},
  423.             {Sat},{im({土})},,{im({  })});
  424.     im(@getchar(dt,1,4)|{-}|@getchar(dt,6,2)|{-}|@getchar(dt,9,2)|
  425.         { (}|week|{) }|@getchar(dt,16,8));
  426.     };
  427. /*    指定されたファイルをリネームして同一のディレクトリにコピーする */
  428. %renname{
  429.     [OLDFILE,NEWFILE]
  430.     copyfile(OLDFILE,@body(OLDFILE,,{\})|{\}|NEWFILE);delfile(OLDFILE);
  431.     };
  432. /*    指定されたディレクトリに yymmddnn.* というファイルを作成する */
  433. %crefile{[path,sfx]
  434.     var n[2];var file1[12];
  435.     %d @getdt;%date @getchar(d,3,2)|@getchar(d,6,2)|@getchar(d,9,2);
  436.     mkdir2(path);setcdir2(path);
  437.     n:=-1;
  438.     loop    ({    n:=n+1;
  439.         case    (@nochar(n)=1,{Yes},{n:={0}|n});
  440.         case    (sfx={},
  441.             {Yes},{file1:=date|n},{No}, {file1:=date|n|{.}|sfx});
  442.         case    (@filechk(file1)={No}||n==99,
  443.             {Yes},{im({No})},{No}, {im({Yes})});
  444.         });
  445.     im(file1)};
  446.  
  447. /*    英大文字を小文字に変換する    */
  448. %tosmall{[char]
  449.     case    (char,
  450.         {A},{im({a})},{B},{im({b})},{C},{im({c})},{D},{im({d})},
  451.         {E},{im({e})},{F},{im({f})},{G},{im({g})},{H},{im({h})},
  452.         {I},{im({i})},{J},{im({j})},{K},{im({k})},{L},{im({l})},
  453.         {M},{im({m})},{N},{im({n})},{O},{im({o})},{P},{im({p})},
  454.         {Q},{im({q})},{R},{im({r})},{S},{im({s})},{T},{im({t})},
  455.         {u},{im({U})},{V},{im({v})},{W},{im({w})},{X},{im({x})},
  456.         {Y},{im({y})},{Z},{im({z})},
  457.         ,{im(char)}
  458.         );
  459.     };
  460. /*    全てのメモを退避する    */
  461. %SaveAllMemo{
  462.     var    n    [2];
  463.     n:=0;
  464.     loop    ({
  465.         n:=n+1;
  466.         case    (n<=9,
  467.             {Yes},{delfile(TEMP2|{_BACKUP}|n|{.BAK});im({Yes})},
  468.             {No},{im({No})}
  469.             );
  470.         });
  471.     loop    ({
  472.         case    (@mlast!=0,
  473.             {Yes},
  474.             {
  475.             case    (@mcheck,
  476.                 0,{mopen(@mlast)},
  477.                 @mlast,,
  478.                 ,{mclose(1);mopen(@mlast)}
  479.                 );
  480.             });
  481.         %memono    @mcheck;
  482.         case    (memono!=0,
  483.             {Yes},
  484.             {
  485.             mclose(1);
  486.             mwrite(TEMP2|{_backup}|memono|{.BAK},memono);
  487.             mopen(memono);
  488.             mclose(3);
  489.             });
  490.         im(@mlast!=0);
  491.         });
  492.     };
  493. /*    退避ファイルからメモを復元後、退避ファイルを消去する    */
  494. %RestoreMemo{
  495.     DeleteMemo(1);
  496.     var    n    [2];
  497.     var    m    [2];
  498.     n:=0;    m:=0;
  499.     loop    ({
  500.         n:=n+1;
  501.         case    (@filechk(TEMP2|{_BACKUP}|n|{.BAK}),
  502.             {Yes},
  503.             {m:=m+1;
  504.             mread(TEMP2|{_BACKUP}|n|{.BAK},m);
  505.             mopen(m,m*20-20,m*15+6,m*20+459,m*15+324);
  506.             mclose(1);
  507.             delfile(TEMP2|{_BACKUP}|n|{.BAK});
  508.             });
  509.         im(n<9);
  510.         });
  511.     };
  512. /*    全てのメモをクローズする    */
  513. %CloseAllMemo{    case(@mlast!=0 && @mcheck==0,{Yes},{mopen(@mlast)});
  514.         case(@mcheck!=0,{Yes},{loop({mclose(2);im(@mcheck!=0)})})
  515.     };
  516. /*    全てのメモを非編集状態にする    */
  517. %InactMemo{
  518.     case(@mcheck!=0,{Yes},{mclose(1)});
  519.     };
  520. /* memono以降のメモを削除する */
  521. %DeleteMemo{
  522.     [memono]
  523.     loop    ({
  524.         case    (@mlast>=memono,
  525.             {Yes},
  526.             {
  527.             case    (@mcheck==0,{Yes},{mopen(@mlast,0,21,79,61)});
  528.             case    (mopver,{Win31},{mopen(@mcheck,0,21,79,61)});
  529.             case    (@mcheck>=memono,
  530.                 {Yes},{mclose(3)},
  531.                 {No},{mclose(1);mopen(@mlast,0,21,79,61)}
  532.                 );
  533.             im({Yes});
  534.             },
  535.             {No},{im({No})}
  536.             );
  537.         });
  538.     };
  539. /*    ファイル名にワイルドカード(*,?)が含まれるかチェックする    */
  540. %wild    {[file1]
  541.     case    (@nochar(file1)==0,
  542.         {Yes},
  543.         {im({No})},
  544.         {No},{
  545.         case    (@getchar(file1,1,1),
  546.             {*},{im({Yes})},
  547.             {?},{im({Yes})},
  548.             ,{im(@wild(@getchar(file1,2)))}
  549.             );
  550.         });
  551.     };
  552. /*    電話料金計算    */
  553. %RYOUKIN{
  554.     %cdir    @getcdir;
  555.     %memono    @mlast+1;
  556.     %picknt{footnote(NET|{ネットの電話料金を計算中です});
  557.         CloseAllMemo;setcdir(CDIR2);
  558.         mwrite(TEMP2|{_connect.dat},memono);
  559.         case    (@filechk(CDIR2|{denwadai.exe}),
  560.             {Yes},
  561.             {dispoff(!DEBUG);
  562.             command({denwadai.exe }|AcPNo|{ }
  563.             |TEMP2|{_connect.dat }|TEMP2|{_ryoukin.new /J});
  564.             dispoff({No});
  565.             case    (@filechk(TEMP2|{_ryoukin.new}),
  566.                 {Yes},{mclear(memono);
  567.                 mread(TEMP2|{_ryoukin.new},memono);
  568.                 mopen(memono,0,21,639,459,{w});
  569.                 },
  570.                 {No},{display({みかか代計算に失敗しました\n});
  571.                 wait(2);mopen(memono,0,21,639,459,{w});mclose(1)
  572.                 });
  573.             },
  574.             {No},{display({denwadai.exeが存在しません})});
  575.         };
  576.     %savememo    {CloseAllMemo;
  577.             mwrite(LOG2|{アクセスdat\ryoukin.dat},memono)
  578.             };
  579.     case    (@mlast==9,
  580.         {Yes},
  581.         {footnote({メモ番号が一杯のため、新しいメモを開けません});
  582.         wait(2);},
  583.         {No},
  584.         {CloseAllMemo;madd(memono,{\n});mclear(memono);
  585.         mread(LOG2|{アクセスdat\CONNECT.DAT},memono); 
  586.         mopen(memono,0,21,639,459,{r});
  587.             loop    ({
  588.                 footnote({終了計算},{b});
  589.                 waitx();
  590.                 case    (@xtype,
  591.                 101,{savememo;im({No})},201,{savememo;im({No})},
  592.                 102,{picknt;im({Yes})},202,{picknt;im({Yes})},
  593.                     ,{im({Yes})}
  594.                     );
  595.                 });
  596.             case    (@mcheck==memono,
  597.                 {Yes},{mclose(3)},
  598.                 {No},{CloseAllMemo;mopen(memono);mclose(3)}
  599.                 );
  600.             });
  601.         delfile(TEMP2|{_connect.dat});
  602.         delfile(TEMP2|{_ryoukin.new});
  603.     setcdir(cdir)
  604.     };
  605. /*    ID検索処理    */
  606. %IDfile    {
  607.     <ID検索を可能にする為に>
  608.     ☆「会員名簿 (or 全員のプロフィールを見る)」を実行下さい。
  609.         この場合は、ID検索リストファイルが自動生成されます。
  610.  
  611.     <上記を実行したが、このコメントが出てしまう方へ>
  612.     ☆「ログファイルの設定」で存在していないファイルを
  613.         ID検索リストファイルに指定してませんか?
  614.     };
  615. /*    空文(改行コードのみの文字列)をカットする    */
  616. %CRCUT{[x] var y[20];
  617.         case    (x,
  618.             CRLF,{y:={}},
  619.             {},{y:={}},
  620.             ,{y:=@body(x,,{})}
  621.             );
  622.     im(y);
  623.     };
  624. /*    コンマをカットする    */
  625. %conma    {[x]
  626.     %size    @case    (@nochar(x)>0
  627.             ,{Yes},{im(@nochar(x))}
  628.             ,,{im({10})});
  629.     var y[size];
  630.     var n[3];var N[3];
  631.     n:=0;N:=@nochar(x);
  632.     loop    ({n:=n+1;
  633.         case    (n<=N,
  634.             {Yes},{
  635.             %a    @getchar(x,n,1);
  636.             case    (a={,},
  637.                 {Yes},{im({Yes})},
  638.                 {No},{y:=y|a;im({Yes})}
  639.                 );
  640.             },
  641.             {No},{im({No})}
  642.             );
  643.         });
  644.     im(y);
  645.     };
  646. /*    最後の行に改行コードが無ければ追加する    */
  647. %rtCHK    {[memono]
  648.     var lineNo[3];var charNo[4];var a[82];var b[4];
  649.     %denMEM @LINECUT(@memo(memono));
  650.     lineNo:=@noline(denMEM);
  651.     a:= @getline(denMEM,lineNo,1);
  652.     b:= @getchar(a,charNo);
  653.     charNo:=@im(@nochar(a));
  654.     case    (b=CRLF,
  655.         {Yes},{display({改行マークが有ります\n})},
  656.         {No},{
  657.         case    (lineNo=0 || a={},
  658.             {Yes},{display({改行マークを追加しません\n});
  659.             CloseAllMemo;
  660.             mclear(memono);madd(memono,denMEM);
  661.             mopen(memono,0,21,639,459,{w})
  662.             },
  663.             {No},{
  664.             display({改行マークを追加しました\n});
  665.             CloseAllMemo;
  666.             mclear(memono);madd(memono,denMEM|{\n});
  667.             mopen(memono,0,21,639,459,{w})
  668.             });
  669.         });
  670.     case    (DEBUG,{Yes},
  671.         {display({lineNo=}|lineNo|{,charNo=}|charNo|{\n}|
  672.             {最後の行=}|a|{\n});
  673.         });
  674.     };
  675. /*    空行(改行コードのみの行)と不要な行をカットする    */
  676. %LINECUT{[x]
  677.     %size    @case    (@nochar(x)>0
  678.             ,{Yes},{im(@nochar(x))}
  679.             ,,{im({10})});
  680.     var    y    [size];
  681.     var    n    [3];
  682.     var    m    [3];
  683.     n:=1;m:=1;y:={};
  684.     loop    ({
  685.         %a    @getline(x,n,1);
  686.         case    (a,
  687.             CRLF,{n:=n+1;im({Yes})},
  688.             {},{im({No})},
  689.             ,{case    (
  690.                 @getchar(a,1,8)={ファイル}||
  691.                 @getchar(a,1,4)={番号}||
  692.                 @getchar(a,1,2)={Ch}||
  693.                 @getchar(a,1,2)={ >}||
  694.                 @getchar(a,1,1)={-}||
  695.                 @getchar(a,1,1)={F}||
  696.                 @getchar(a,1,1)={M}||
  697.                 @getchar(a,1,4)={SELE},
  698.                 {No},{y:=y|a;n:=n+1;m:=m+1;im(m<999)},
  699.                 {Yes},{n:=n+1;im({Yes})}
  700.                 );
  701.             });
  702.         });
  703.     im(y);
  704.     };
  705. /*    文字を二桁に変換    */
  706. %To2    {[x]
  707.     var netNo[2];
  708.     netNo:=x;
  709.     case    (@nochar(netNo),
  710.         {2},{netNo:=netNo},
  711.         {1},{netNo:={0}|netNo},
  712.         {0},{netNo:={00}});
  713.     im(netNo);
  714.     };
  715. /*    文字を三桁に変換:複数    */
  716. %To3    {[x]
  717.     var mesNo[300];var MesNo[6];var TNo[300];var n[3];
  718.     mesNo:=x;TNo:={};n:={0};
  719.     loop    ({n:=n+1;
  720.         case    (mesNo={},
  721.             {Yes},{im({No})},
  722.             {No},
  723.             {MesNo:=@head(mesNo,{,});
  724.             case    (@nochar(MesNo),
  725.                 {4},{
  726.                 case    (@getchar(MesNo,1,1),
  727.                     {#},{MesNo:=@getchar(MesNo,2,3)},
  728.                     ,{MesNo:=@getchar(MesNo,1,3)})
  729.                 },
  730.                 {3},{MesNo:=MesNo},
  731.                 {2},{
  732.                 case    (MesNo={No},
  733.                     {Yes},{MesNo:={}},
  734.                     {No},{MesNo:={0}|MesNo})
  735.                 },
  736.                 {1},{MesNo:={00}|MesNo},
  737.                 ,{MesNo:=@getchar(MesNo,1,3)}
  738.                 );
  739.             case    (MesNo={all}||MesNo={ALL},
  740.                 {No},{
  741.                 case    (TNo={},
  742.                     {Yes},{TNo:=MesNo},
  743.                     {No},{
  744.                     case    (TNo={ALL}||TNo={all},
  745.                         {Yes},{TNo:=MesNo},
  746.                         {No},{TNo:=TNo|{,}|MesNo})
  747.                     })
  748.                 },
  749.                 {Yes},{case    (n=1 && MorL={BoD},
  750.                         {Yes},{TNo:={ALL}
  751.                         })
  752.                 });
  753.             mesNo:=@body(mesNo,{,});
  754.             im({Yes});
  755.             });
  756.         });
  757.     im(TNo);
  758.     };
  759. %pickid    {
  760.     %m    @nolmemo(memono1);    /*メモの総行数を返す*/
  761.     %n    @xlinenum;        /*カーソル位置の行数を返す*/
  762.     %l1    @case    (n<1,
  763.             {Yes},{im(@memo(memono1,1,1))},
  764.             {No},
  765.             {case    (n>m,
  766.                 {Yes},{im(@memo(memono1,m,1))},
  767.                 {No},{im(@memo(memono1,n,1))}
  768.                 );
  769.             });
  770.     case    (@getchar(l1,1,2)={ID},
  771.         {Yes},    {im(@body(@body(l1,{:},{/}),{ },{ }))},
  772.         {No},
  773.         {
  774.         case    (@getchar(l1,21,1)={/} && @getchar(l1,24,1)={/}||
  775.             @getchar(l1,23,1)={/} && @getchar(l1,26,1)={/}||
  776.             @getchar(l1,29,1)={/} && @getchar(l1,32,1)={/},
  777.             {Yes},{im(@head(l1,{ }))},
  778.             {No},{
  779.             case    (@getchar(l1,24,1)={/} &&
  780.                 @getchar(l1,27,1)={/}||
  781.                 @getchar(l1,26,1)={/} &&
  782.                 @getchar(l1,29,1)={/}||
  783.                 @getchar(l1,32,1)={/} &&
  784.                 @getchar(l1,35,1)={/},
  785.                 {Yes},{im(@head(@body(l1,{ }),{ }))},
  786.                 {No},{footnote({カーソルを「IDナンバー」に合わせて}|                    {下さい});im({});
  787.                 })
  788.             })
  789.         });
  790.     };
  791. %pickhd{
  792.     %m    @nolmemo(memono1);
  793.     %n    @xlinenum;
  794.     %l1    @case    (n<1,
  795.             {Yes},{im(@memo(memono1,1,1))},
  796.             {No},
  797.             {case    (n>m,
  798.                 {Yes},{im(@memo(memono1,m,1))},
  799.                 {No},{im(@memo(memono1,n,1))}
  800.                 );
  801.             });
  802.     case    (@getchar(l1,1,2)={ID},
  803.         {Yes},    {im(@body(@body(l1,{:}),{ },{ }))},
  804.         {No},    {im(@getchar(l1,1,18))}
  805.         );
  806.     };
  807. %pickmes{
  808.     %m    @nolmemo(memono1);    %n    @xlinenum;
  809.     %l1    @case    (n<1,
  810.             {Yes},{im(@memo(memono1,1,1))},
  811.             {No},
  812.             {case    (n>m,
  813.                 {Yes},{im(@memo(memono1,m,1))},
  814.                 {No},{im(@memo(memono1,n,1))}
  815.                 );
  816.             });
  817.     case    (@nochar(@head(@body(l1,{#}),{ }))={3},
  818.         {Yes},    {im(@head(@body(l1,{#}),{ }))},
  819.         {No},{footnote({カーソルを「ボードナンバー」に合わせて下さい});im({});
  820.         });
  821.     };
  822. %prSIDsrch{
  823.     case    (memono1>9,
  824.         {Yes},
  825.         {footnote({メモ番号が一杯のためメモを開けません});
  826.         wait(1);im({});
  827.         },
  828.         {No},
  829.         {CloseAllMemo;madd(memono1,{\n});mclear(memono1);
  830.         case    (@filechk(MEMBER),
  831.             {Yes},{mread(MEMBER,memono1)},
  832.             {No},{
  833.             case    (@filechk(LOG2|{PROFILE\member.lst}),
  834.             {Yes},{mread(LOG2|{PROFILE\member.lst},memono1)},
  835.             {No},{madd(memono1,IDfile)}
  836.                 );
  837.             }); 
  838.         });
  839.     };
  840.  
  841. /*    ID検索処理    */
  842. %IDsearch{
  843.     %memono1    @mlast+1;
  844.     prSIDsrch;mopen(memono1,0,21,639,459,{r});
  845.         footnote({選択中止},{b});
  846.         loop    ({
  847.             waitx();
  848.             case    (@xtype,
  849.                 101,{footnote({});im(@pickid)},
  850.                 201,{footnote({});im(@pickid)},
  851.                 102,{footnote({});im({})},
  852.                 202,{footnote({});im({})},
  853.                 memono1,{footnote({});im(@pickid)},
  854.                 ,{im({Yes})}
  855.                 );
  856.             });
  857.         case    (@mcheck==memono1,
  858.             {Yes},{mclose(3)},
  859.             {No},{CloseAllMemo;mopen(memono1);mclose(3)}
  860.             );
  861.     };
  862. /*    HNDLE検索処理    */
  863. %HDsearch{
  864.     %memono1    @mlast+1;
  865.     prSIDsrch;mopen(memono1,0,21,639,459,{r});
  866.         footnote({選択中止},{b});
  867.         loop    ({
  868.             waitx();
  869.             case    (@xtype,
  870.                 101,{footnote({});im(@LINECUT(@pickhd))},
  871.                 201,{footnote({});im(@LINECUT(@pickhd))},
  872.                 102,{footnote({});im({})},
  873.                 202,{footnote({});im({})},
  874.                 memono1,{footnote({});im(@LINECUT(@pickhd))},
  875.                 ,{im({Yes})}
  876.                 );
  877.             });
  878.         case    (@mcheck==memono1,
  879.             {Yes},{mclose(3)},
  880.             {No},{CloseAllMemo;mopen(memono1);mclose(3)}
  881.             );
  882.     };
  883. /*    ドライブ&ディレクトリ名無しファイル名出力    */
  884. %FileND{
  885.     [file]
  886.     var    NoDirF    [64];
  887.     NoDirF:=@tail(@tail(file,{:}),{\});
  888.     %NameLong @nochar(NoDirF);
  889.     case( NameLong > 12,
  890.         {Yes},{im(@getchar(NoDirF,NameLong-12))},
  891.         {No},{im(NoDirF)});
  892.     };
  893. /* 巡回ボード「巡マークの追加処理」 */
  894. %prMESsrch{[fbNo,MorL]
  895.     var n[3];n:={0};%cdir    @getcdir;
  896.     InactMemo;
  897.     case(@mlast>=memono1,{Yes},{mclear(memono1)});
  898.     case    (MorL,
  899.         {BoD},{
  900.         case    (@filechk(LOG2|{board\title.txt}),
  901.             {Yes},
  902.             {%LISTbod @LINECUT(@read(LOG2|{board\title.txt}));
  903.             madd(memono1,LISTbod);
  904.             case    (fbNo={all}||fbNo={ALL}||fbNo={},
  905.                 {No},{FBoadNo(fbNo)});
  906.             },
  907.             {No},{footnote(neverAC);wait(2);
  908.                 madd(memono1,neverAC)
  909.                 }); 
  910.         },
  911.         {LiB},{
  912.         case    (@filechk(LOG2|{datalib\}|NET|{dlib.lst}),
  913.             {Yes},
  914.             {
  915.             %LISTlib @LINECUT(@read(LOG2|{datalib\}
  916.             |NET|{dlib.lst}));madd(memono1,LISTlib);
  917.             case    (fbNo={all}||fbNo={ALL}||fbNo={},
  918.                 {No},{FBoadNo(fbNo)});
  919.             },
  920.             {No},{footnote(neverAC);wait(2);
  921.                 madd(memono1,neverAC)
  922.                 }); 
  923.         });
  924.     };
  925. %FBoadNo{[fbNo]
  926.     %Chek @memo(memono1);
  927.     %size    @nochar(Chek)+@noline(Chek)*10;
  928.     var y[size];y:={};
  929.     loop    ({    n:=n+1;
  930.         %a    @getline(@memo(memono1),n,1);
  931.         case    (a={},    
  932.             {Yes},{im({No})},,
  933.             {case    (@exist(fbNo,@tail(a,{#},{ })),
  934.                 {Yes},
  935.                 {var Hyozi[11];
  936.                 case(DeLog,{Yes},{Hyozi:={ログ削除→}},
  937.                     {No},{Hyozi:={ログ書込→}},
  938.                     {Lup},{Hyozi:={アプロード先→}},,
  939.                     {Hyozi:={巡回→}});
  940.                 y:=y|Hyozi|a
  941.                 },
  942.                 {No},{y:=y|a}
  943.                 );
  944.             im({Yes})
  945.             });
  946.         });
  947.     case(@mlast>=memono1,{Yes},{mclear(memono1)});
  948.     %NewfbNo @LINECUT(y);
  949.     madd(memono1,NewfbNo);
  950.     };
  951. /*エラーコメント*/
  952. %neverAC{一度ネットにアクセスしてから御使用ください};
  953.  
  954. /*     表示中のファイル内のESC制御記号をカットする    */
  955. %ESC    {var n[1];
  956.     case    (memono+2=@mlast,
  957.         {Yes},{n:=2},{No},{n:=0});
  958.     footnote({現在表示しているメモNo.}|memono+n|
  959.     {のESC制御記号をカット中です});
  960.     InactMemo;%cdir    @getcdir;
  961.     delfile(TEMP2|{temp.$a$});delfile(TEMP2|{escctr.log});
  962.     mwrite(TEMP2|{escctr.log},memono+n);
  963.     setcdir(CDIR);
  964.     case    (DEBUG,{Yes},
  965.     {display({escctr -D}|TEMP2|{ -K}|TEMP2|{ }|TEMP2|{escctr.log  })});
  966.     dispoff(!DEBUG);
  967.     command(CDIR2|{escctr -D}|TEMP2|{ -K}|TEMP2|{ }|TEMP2|{escctr.log});
  968.     dispoff({No});
  969.     setcdir(cdir);
  970.     case    (@filechk(TEMP2|{escctr.log}),
  971.         {Yes},{mclear(memono+n);mread(TEMP2|{escctr.log},memono+n);
  972.         mopen(memono+n,0,21,639,459,{w})},
  973.         {No} ,{display({ESCカット機能には ESCCTR.EXE がパスの通った}|
  974.                 {ディレクトリに必要です\n});
  975.         wait(2);mopen(memono+n,0,21,639,459,{w});mclose(1)});
  976.     };
  977. /*    ボードNo.検索処理    */
  978. %MLserch{[fbNo,MorL]
  979.     %memono1    @mlast+1;
  980.      case    (memono1>9,
  981.         {Yes},
  982.         {footnote({これ以上メモを開けません});wait(1);im({})},
  983.         {No},
  984.         {
  985.         loop    ({
  986.          prMESsrch(fbNo,MorL);mopen(memono1,0,21,639,459,{r});
  987.             case    (ESCon={No},{No},{ESC});
  988.             footnote({選択中止},{b});
  989.             waitx();moveline:=@xlinenum;        /*追記行*/
  990.             case    (@xtype,
  991.                 101,{footnote({});im(@pickmes)},
  992.                 201,{footnote({});im(@pickmes)},
  993.                 102,{footnote({});im({})},
  994.                 202,{footnote({});im({})},
  995.                 memono1,{footnote({});im(@pickmes)},
  996.                 ,{im({Yes})}
  997.                 );
  998.             });
  999.             case    (@mcheck==memono1,
  1000.                 {Yes},{mclose(3)},
  1001.                 {No},{CloseAllMemo;mopen(memono1);mclose(3)}
  1002.                 );
  1003.         });
  1004.     };
  1005. /*    CD-ROM 辞書 検索    */
  1006. %CDfind    {
  1007.     [memono]
  1008.     var    PARAM    [64];
  1009.     var    DICNO    [2];
  1010.     DICNO:=1;    /* 辞書番号デフォルト値 */
  1011.     loop    ({
  1012.         footnote({CD-ROM辞書を検索します (辞書番号:}|DICNO|{)});
  1013.         PARAM:=@input({検索キーを入力してください}|
  1014.                 {  改行のみでCD辞書の選択});
  1015.         case    (PARAM<>{},
  1016.             {Yes},
  1017.             {
  1018.             footnote({CD-ROM 辞書検索中(検索キー『}|
  1019.                 PARAM|{』)});
  1020.             delfile(TEMP2|{doradic.tmp});
  1021.             %cdir    @getcdir;
  1022.             setcdir(CDIR);
  1023.             dispoff(!DEBUG);
  1024.             command({DIC.EXE -gD}|DICNO|{ }|PARAM|{ > }|
  1025.                 TEMP2|{doradic.tmp});
  1026.             dispoff({No});
  1027.             setcdir(cdir);
  1028.             InactMemo;
  1029.             madd(memono,{});
  1030.             mclear(memono);
  1031.             case    (@filechk(TEMP2|{doradic.tmp}),
  1032.                 {Yes},{mread(TEMP2|{doradic.tmp},memono)},
  1033.                 {No},{footnote({CD辞書検索には DIC.EXE が}|
  1034.                     {パスの通ったディレクトリに必要です})}
  1035.                 );
  1036.             mopen(memono);
  1037.             var    flag    [6];
  1038.             loop    ({
  1039.                 footnote({終了検索        切替},{b});
  1040.                 waitx();
  1041.                 case    (@xtype,
  1042.                     101,{flag:={end};im({No})},
  1043.                     201,{flag:={end};im({No})},
  1044.                     102,{flag:={next};im({No})},
  1045.                     202,{flag:={next};im({No})},
  1046.                     105,{flag:={select};im({No})},
  1047.                     205,{flag:={select};im({No})},
  1048.                     ,{flag:={};im({Yes})}
  1049.                     );
  1050.                 });
  1051.             case    (flag,
  1052.                 {next},{im({Yes})},
  1053.                 {end},{im({No})},
  1054.                 {select},{DICsel}
  1055.                 );
  1056.             },
  1057.             {No},{DICsel}
  1058.             );
  1059.         });
  1060.     };
  1061.  
  1062. /*    CD辞書切替え    */
  1063. %DICsel    {
  1064.     footnote({CD辞書の選択をします});
  1065.             %cdir    @getcdir;
  1066.     delfile(TEMP2|{doradic.prm});
  1067.     delfile(TEMP2|{doradic.tmp});
  1068.     write(TEMP2|{_mopdic.prm},{});
  1069.     setcdir(CDIR);
  1070.     dispoff(!DEBUG);
  1071.     command({DIC.EXE < }|TEMP2|{_mopdic.prm}|{ > }|
  1072.         TEMP2|{doradic.tmp});
  1073.     dispoff({No});
  1074.     setcdir(cdir);
  1075.     InactMemo;
  1076.     madd(memono,{});
  1077.     mclear(memono);
  1078.     case    (@filechk(TEMP2|{doradic.tmp}),
  1079.         {Yes},{mread(TEMP2|{doradic.tmp},memono)},
  1080.         {No},{footnote({CD辞書検索には DIC.EXE が}|
  1081.             {パスの通ったディレクトリに必要でキ})}
  1082.         );
  1083.     mopen(memono);
  1084.     loop    ({
  1085.         SNDMSG({erande_f.snd});
  1086.         footnote({終了    選択    取消},{b});
  1087.         waitx();
  1088.         case    (@xtype,
  1089.             101,{DICNO:=0;im({No})},
  1090.             201,{DICNO:=0;im({No})},
  1091.             103,{DICNO:=@xlinenum;im({No})},
  1092.             203,{DICNO:=@xlinenum;im({No})},
  1093.             105,{im({No})},
  1094.             205,{im({No})},
  1095.             memono,{DICNO:=@xlinenum;im({No})},
  1096.             ,{im({Yes})}
  1097.             );
  1098.         });
  1099.     im(DICNO!=0);
  1100.     };
  1101. /*    指定回数の文字列の繰り返し    */
  1102. %Sn    {[n,str]
  1103.     var buf[500];
  1104.     var c[3];
  1105.     buf:={};
  1106.     c:=0;
  1107.     loop({buf:=buf|str; c:=c+1; im(c<n)});
  1108.     im(buf)
  1109.     };
  1110.  
  1111. /*    半角空白を追加して指定文字数にする(スタックエラー対策(笑):n<=500) */
  1112. %SPP    {
  1113.     [x,n,p]    /* 文字列,文字数,追加位置(省略時:左,それ以外:右)*/
  1114.     %stl    @nochar(x);
  1115.     case    (stl<n,
  1116.         {No},{im(x)},
  1117.         ,
  1118.         {
  1119.         %spc    n-stl;
  1120.         case    (p={},
  1121.             {Yes},{im(@Sn(spc,{ })|x)},
  1122.             {No}, {im(x|@Sn(spc,{ }))}
  1123.             );
  1124.         });
  1125.     };
  1126. /*    初期化    */
  1127. %intUSR    {
  1128.     LOG:={};    aftLOG:={};
  1129.     freLOG:={};    UP:={};        FSW:={};    RTTLdir:={};
  1130.     RTop:={};    VIEWLOG:={};    MEMBER:={};    UPDOWN:={};
  1131.     MAILDEL:={};    MAILRED:={};    DelML:={};    BmalON:={};
  1132.     BMALDEL:={};    BMALRED:={};    DelBML:={};    ESCon:={};
  1133.     PLTmemo:={};    HedFut:={};    BINop:={};    WHO:={};
  1134.     TalkID1:={};TalkID2:={};TalkID3:={};TalkID4:={};TalkID5:={};
  1135.     TalkID6:={};TalkID7:={};TalkID8:={};TalkID9:={};TalkID10:={};
  1136.     TalkID11:={};TalkID12:={};TalkID13:={};TalkID14:={};TalkID15:={};
  1137.     TalkID16:={};TalkID17:={};TalkID18:={};TalkID19:={};TalkID20:={};
  1138.     CMt1:={};CMt2:={};CMt3:={};CMt4:={};CMt5:={};CMt6:={};CMt7:={};
  1139.     CMt8:={};CMt9:={};CMt10:={};CMt11:={};CMt12:={};CMt13:={};CMt14:={};
  1140.     CMt15:={};CMt16:={};CMt17:={};CMt18:={};CMt19:={};CMt20:={};
  1141.     R:={};G:={};B:={};
  1142.     };
  1143. /*    通信ポートのオープン    */
  1144. %OpenPort{
  1145.     case(mopver,{Win31},{portno(PortNo)});
  1146.     };
  1147. /*    通信ポートのクローズ    */
  1148. %ClosePort{
  1149.     case(mopver={Win31}&&@linechck={No},{Yes},{portno(100)});
  1150.     };
  1151.  
  1152. /*    初期設定    */
  1153. %init    {
  1154.     case(OAK={},{Yes},{setoak({J})},{No},{setoak(OAK)});
  1155.     case(REDIALt={},{Yes},{REDIALt:={20}});
  1156.     case(REDIAL={},{Yes},{REDIAL:={5}});
  1157.     case(CALL={},{Yes},{CALL:={固定}});
  1158.     case(NATTOU={Yes}||NATTOU={No},{Yes},{nattou(NATTOU)});
  1159.     case(CLICK={Yes}||CLICK={No},{Yes},{click(CLICK)});
  1160.     case(R<>{}&&G<>{}&&B<>{},{Yes},{backclr(R,G,B)});
  1161.     case(VBELL={Yes}||VBELL={No},{Yes},{visibell(VBELL)});
  1162.     case(@tail(BELFIL,{.}),
  1163.         {snd},{bellfile(BELFIL)},{SND},{bellfile(BELFIL)});
  1164.     case(TAB<>{},{Yes},{tab(TAB)});
  1165.     case(TEMP={},{Yes},{TEMP:=CDIR});
  1166.     TEMP2:=@dir2(TEMP);
  1167.     case(TEMP<>{}&&@setcdir2(TEMP)={No},{Yes},{mkdir2(TEMP)});
  1168.     case(LOG={},{Yes},{LOG:=CDIR;FSW:=LOG|{\FREESOFT}});
  1169.     LOG2:=@dir2(LOG);
  1170.     
  1171.     case(LOG<>{}&&@setcdir2(LOG)={No},{Yes},{mkdir2(LOG)});
  1172.     case(UP={},{Yes},{UP:=TEMP});
  1173.     UP2:=@dir2(UP);
  1174.     case(UP<>{}&&@setcdir2(UP)={No},{Yes},{mkdir2(UP)});
  1175.     SOUND2:=@dir2(SOUND);
  1176.     RTTL2:=@dir2(RTTLdir);
  1177.     RTcfg:=@body(RTTLC,,{\});
  1178.     case(INFO={},{Yes},{INFO:={Yes}});
  1179.     case(DIVE={},{Yes},{DIVE:={Yes}});
  1180.     case(STYPE={},{Yes},{STYPE:={x}});
  1181.     case(DORD={},{Yes},{DORD:={+}});
  1182.     case(FORD={},{Yes},{FORD:={-}});
  1183.     };
  1184. /*    指定されたファイルマネージャを起動する    */
  1185. %FILEMGR{
  1186.     case    (FMGR,
  1187.         {},    {setcdir(CDIR);#DORAEDIT.PLP},
  1188.         ,
  1189.         {
  1190.         %SFX    @tail(FMGR,{.});
  1191.         case    (SFX={COM}||SFX={com}||
  1192.              SFX={EXE}||SFX={exe}||
  1193.              SFX={BAT}||SFX={bat},
  1194.             {Yes},
  1195.             {command(FMGR)}
  1196.             );
  1197.         case    (SFX={PLT}||SFX={plt}||
  1198.              SFX={PLP}||SFX={plp},
  1199.             {Yes},
  1200.             {setcdir(@body(FMGR,,{\}));%fmgr @read(FMGR);fmgr}
  1201.             );
  1202.         });
  1203.     };
  1204. /************************************************************************/
  1205. /*                      アクセスパターン設定処理                        */
  1206. /************************************************************************/
  1207. /*    設定を登録    */
  1208. %setREGIST{
  1209.     case    (accUSR<>{},{Yes},{
  1210.         case    (@filechk(CDIR2|accUSR),{Yes},{
  1211.             %ExcPilot {#}|CDIR2|accUSR;ExcPilot;init;
  1212.             SETFILE1:=accUSR;
  1213.             })});
  1214.     case    (accTGK<>{},{Yes},{
  1215.         case    (@filechk(CDIR2|accTGK),{Yes},{
  1216.             %ExcPilot {#}|CDIR2|accTGK;ExcPilot;init;
  1217.             SETFILE2:=accTGK;
  1218.             })});
  1219.     };
  1220. /*    設定コピー    */
  1221. %NETCOPY{
  1222.     footnote({読み込むファイルを選択してください});
  1223.     setcdir(CDIR2);    %file    @filesel;
  1224.     case    (file={},
  1225.         {Yes},{CloseAllMemo},
  1226.         {No},
  1227.         {
  1228.         CloseAllMemo;
  1229.         madd(memono+1,{\n});
  1230.         mclear(memono+1);
  1231.         case(@filechk(file),{Yes},{mread(file,memono+1)});
  1232.         mopen(memono,0,21,639,240,{r});mclose(1);
  1233.         mopen(memono+1,0,241,639,459,{r} );
  1234.         select({このファイル内容を追加してもいいですか?},
  1235.             Wtime4,{CloseAllMemo},
  1236.             {  O K },
  1237.             {
  1238.             CloseAllMemo;
  1239.             dispoff(!DEBUG);
  1240.             command({copy }|TEMP2|{_mopnet.wrk + }|file|
  1241.                 { }|TEMP2|{_mopnet.wrk});
  1242.             dispoff({No});
  1243.             mclear(memono);
  1244.             mread(TEMP2|{_mopnet.wrk},memono)},
  1245.             { N G },{CloseAllMemo}
  1246.             )})};
  1247. /*    アクセスパターン手動編集    */
  1248. %HANDNET{
  1249.     CloseAllMemo;mopen(memono1,0,21,639,459,{w});
  1250.     loop    ({
  1251.         footnote({終了      取消},{b});waitx();
  1252.         case    (@xtype,
  1253.             101,
  1254.             {
  1255.             CloseAllMemo;
  1256.             mwrite(TEMP2|{_mopnet.wrk},memono1);
  1257.             im({No});
  1258.             },
  1259.             201,
  1260.             {
  1261.             CloseAllMemo;
  1262.             mwrite(TEMP2|{_mopnet.wrk},memono1);
  1263.             im({No})
  1264.             },
  1265.             105,
  1266.             {
  1267.             CloseAllMemo;
  1268.             mclear(memono1);
  1269.             case    (@filechk(TEMP2|{_mopnet.wrk}),
  1270.                 {Yes},{mread(TEMP2|{_mopnet.wrk},memono1)}
  1271.                 );
  1272.             im({No})},
  1273.             205,
  1274.             {
  1275.             CloseAllMemo;
  1276.             mclear(memono1);
  1277.             case    (@filechk(TEMP2|{_mopnet.wrk}),
  1278.                 {Yes},
  1279.                 {mread(TEMP2|{_mopnet.wrk},memono1)}
  1280.                 );
  1281.             im({No});
  1282.             },
  1283.             ,{im({Yes})});
  1284.         })};
  1285. %rnwNET{[NTset]
  1286.     footnote({ネットの設定情報を更新});
  1287.     var ok[2];
  1288.     netset:=@tail(NTset,{netset=},{;});
  1289.     usrset:=@tail(NTset,{usrset=},{;});
  1290.     tgkset:=@tail(NTset,{tgkset=},{;});
  1291.     loop    ({
  1292.     %a @plane(
  1293.         {c ネットの設定情報をセットしてください。\n}|
  1294.         {t ネット 名         /xxxxxxxxxx\n}|
  1295.         {t ユーザー  設定情報   /xxxxxxxxxx\n}|
  1296.         {s              / ファイル一覧 \n}|
  1297.         {t ネットでの処理情報   /xxxxxxxxxx\n}|
  1298.         {s              / ファイル一覧 \n}|
  1299.         {s                   / 登録 / 削除 / 取消  \n},
  1300.             netset,usrset,tgkset);
  1301.         netset:=@head(@getline(a,1,1),{\n});
  1302.         usrset:=@head(@getline(a,2,1),{\n});
  1303.         %sel1    @head(@getline(a,3,1),{\n});
  1304.         tgkset:=@head(@getline(a,4,1),{\n});
  1305.         %sel2    @head(@getline(a,5,1),{\n});
  1306.         ok:=    @head(@getline(a,6,1),{\n});
  1307.         im({No});    /* 右クリック時のデフォルト値 */
  1308.         case    (sel1,{ 1},{usrset:=@filesel({USR});im({Yes})});
  1309.         case    (sel2,{ 1},{tgkset:=@filesel({TG});im({Yes})});
  1310.         case(ok,{ 1},
  1311.             {case    (netset={}||usrset={}||tgkset={},
  1312.                 {No},
  1313.                 {
  1314.                 im({netset=}|netset|{;}|{usrset=}|usrset|{;}|
  1315.                 {tgkset=}|tgkset|{;\n});
  1316.                 });
  1317.             },
  1318.             { 2},{im({})},{ 3},{im(NTset)},
  1319.             ,{im({Yes})}
  1320.             )});
  1321.     };
  1322. %rstDATE{
  1323.     [new]
  1324.     case    (new,
  1325.         NTset,{CloseAllMemo},    /* 変更無し */
  1326.         {},        /* 削除 */
  1327.         {CloseAllMemo;
  1328.         mclear(memono1);
  1329.         case(LineNo>1,{Yes},
  1330.             {madd(memono1,@read(TEMP2|{_mopnet.wrk},1,LineNo-1))});
  1331.         case(LineNo<MaxLine,{Yes},
  1332.             {madd(memono1,@read(TEMP2|{_mopnet.wrk},LineNo+1))});
  1333.         mwrite(TEMP2|{_mopnet.wrk},memono1);
  1334.         },
  1335.         ,        /* 変更あり */
  1336.         {
  1337.         CloseAllMemo;
  1338.         mclear(memono1);
  1339.         case    (LineNo>1,
  1340.             {Yes},
  1341.             {madd(memono1,@read(TEMP2|{_mopnet.wrk},1,LineNo-1))}
  1342.             );
  1343.         madd(memono1,new);
  1344.         case    (LineNo<MaxLine,
  1345.             {Yes},
  1346.             {madd(memono1,@read(TEMP2|{_mopnet.wrk},LineNo+1))}
  1347.             );
  1348.         mwrite(TEMP2|{_mopnet.wrk},memono1);
  1349.         })
  1350.     };
  1351. %ReNew    {
  1352.     var    LineNo    [6];
  1353.     LineNo:=@xlinenum;
  1354.     %MaxLine@nolmemo(memono1);
  1355.     case    (LineNo>MaxLine,
  1356.         {Yes},{LineNo:=MaxLine},
  1357.         {No},{case(LineNo<1,{Yes},{LineNo:=1})}
  1358.         );
  1359.     %NTset    @memo(memono1,LineNo,1);
  1360.     case    (@head(NTset,{=}),
  1361.         {netset},    {rstDATE(@rnwNET(NTset))},
  1362.         {巡回;netset},    {rstDATE(@rnwNET(NTset))},
  1363.         ,            {CloseAllMemo}
  1364.         );
  1365.     };
  1366. %setNET{
  1367.     var ok[2];netset:={};usrset:={};tgkset:={};
  1368.     loop    ({footnote({ネットの設定情報をセットして下さい});
  1369.     %a @plane(
  1370.         {c ネットの設定情報をセットしてください。\n}|
  1371.         {t ネット 名         /xxxxxxxxxx\n}|
  1372.         {t ユーザー  設定情報   /xxxxxxxxxxxx\n}|
  1373.         {s              / ファイル一覧 \n}|
  1374.         {t ネットでの処理情報   /xxxxxxxxxxxx\n}|
  1375.         {s              / ファイル一覧 \n}|
  1376.         {s                        / 設定 / 取消 },
  1377.             netset,usrset,tgkset);
  1378.         netset:=@head(@getline(a,1,1),{\n});
  1379.         usrset:=@head(@getline(a,2,1),{\n});
  1380.         %sel1    @head(@getline(a,3,1),{\n});
  1381.         tgkset:=@head(@getline(a,4,1),{\n});
  1382.         %sel2    @head(@getline(a,5,1),{\n});
  1383.         ok:=    @head(@getline(a,6,1),{\n});
  1384.         case    (sel1,{ 1},{usrset:=@filesel({USR});im({Yes})});
  1385.         case    (sel2,{ 1},{tgkset:=@filesel({TG});im({Yes})});
  1386.         case(ok,{ 1},
  1387.             {case    (netset<>{}&&usrset<>{}&&tgkset<>{},
  1388.                 {Yes},
  1389.                 {
  1390.                 write(TEMP2|{_mopnet.wrk},{netset=}|netset|{;}
  1391.                 |{usrset=}|usrset|{;}|{tgkset=}|tgkset|{;\n});
  1392.                 im({No})})},
  1393.             { 2},{im({Yes})}
  1394.             ,{im({No})}
  1395.             )});
  1396.     };
  1397. %NETset1{
  1398.     loop    ({footnote({セット内容を選択して下さい});SNDMSG({erande_f.snd});
  1399.         select    ({セット内容は?},
  1400.             Wtime4,{im({No})},
  1401.             { ネットの登録設定  },{setNET;im({Yes})},
  1402.             {    終    了    },{im({No})}
  1403.             )});
  1404.     CloseAllMemo;mclear(memono1);
  1405.     case    (@filechk(TEMP2|{_mopnet.wrk}),
  1406.         {Yes},{mread(TEMP2|{_mopnet.wrk},memono1)});
  1407.     };
  1408. /* ネット登録セットアップ メイン処理*/
  1409. %NETset{ 
  1410.     delfile(TEMP2|{_mopnet.wrk});
  1411.     copyfile(CDIR2|{_mopnet.net},TEMP2|{_mopnet.wrk});
  1412.     case    (@filechk(TEMP2|{_mopnet.wrk}),
  1413.         {Yes},{mread(TEMP2|{_mopnet.wrk},memono1)});
  1414.     loop    ({
  1415.         mopen(memono1,0,21,639,459,{r});
  1416.         footnote({終了  取消    変更    追加  読込編集},
  1417.             {b});
  1418.         waitx();
  1419.         case    (@xtype,
  1420.             101,{
  1421.             delfile(CDIR2|{_mopnet.bak});
  1422.             renname(CDIR2|{_mopnet.net},{_mopnet.bak});
  1423.             copyfile(TEMP2|{_mopnet.wrk},CDIR2|{_mopnet.net});
  1424.             im({No})},
  1425.             201,
  1426.             {
  1427.             delfile(CDIR2|{_mopnet.bak});
  1428.             renname(CDIR2|{_mopnet.net},{_mopnet.bak});
  1429.             copyfile(TEMP2|{_mopnet.wrk},CDIR2|{_mopnet.net});
  1430.             im({No})
  1431.             },
  1432.             103,{im({No})},         203,{im({No})},
  1433.             106,{ReNew;im({Yes})}, 206,{ReNew;im({Yes})},
  1434.             109,{NETset1;im({Yes})}, 209,{NETset1;im({Yes})},
  1435.             111,{NETCOPY;im({Yes})},211,{NETCOPY;im({Yes})},
  1436.             112,{HANDNET;im({Yes})},212,{HANDNET;im({Yes})},
  1437.             memono1,{ReNew;im({Yes})},
  1438.             ,{CloseAllMemo;im({Yes})});footnote({});
  1439.         });
  1440.     /* ログ参照に使用したメモの削除処理 */
  1441.     loop({case(@mcheck>=memono1,{Yes},{mclose(3)});im(@mcheck>=memono1)});
  1442.     CloseAllMemo;
  1443.     loop    ({case    (@mlast>=memono1,
  1444.             {Yes},{case(@mcheck!=@mlast,{Yes},{mopen(@mlast)});
  1445.                 mclose(3);im({Yes})},
  1446.             {No},{im({No})});
  1447.         });setcdir(CDIR)};
  1448.  
  1449. var regist[80]; /* アクセス登録ファイル読み込み */
  1450. var accNET[10];/* アクセス登録ネット */
  1451. var accUSR[10];/* アクセス登録USRfile */
  1452. var accTGK[10];/* アクセス登録TGKfile */
  1453. var netset[10]; var usrset[12]; var tgkset[12];/* アクセスパターン登録変数 */
  1454. %memono    @mlast+1;
  1455. %SCHG    {
  1456.     %memono1    @mlast+1;
  1457.     case    (memono1>9,
  1458.         {Yes},
  1459.         {footnote({メモ番号が一杯のためメモを開けません});
  1460.         wait(1);im({});
  1461.         },
  1462.         {No},
  1463.         {CloseAllMemo;madd(memono1,{\n});mclear(memono1);
  1464.         NETset});
  1465.     init;display(NET|{-ネットでの処理は\n}|TGK|{です。});
  1466.     };
  1467. /*                      アクセスパターン変更処理                        */
  1468. %selectBBS{
  1469.     var BBSpat[1500];SNDMSG({erande_f.snd});
  1470.     case    (@filechk(CDIR2|{_mopnet.net}),
  1471.         {Yes},{BBSpat:=@read(CDIR2|{_mopnet.net})},
  1472.         {No},{BBSpat:=@read(CDIR2|{sample.net})});
  1473.  
  1474.     %NTsetN{  [n]    
  1475.         %a @getline(BBSpat,n,1);
  1476.         accNET:=@tail(a,{netset=},{;});
  1477.         accUSR:=@tail(a,{usrset=},{;});
  1478.         accTGK:=@tail(a,{tgkset=},{;});
  1479.         case    (accNET={}||accUSR={}||accTGK={},
  1480.             {No},{setREGIST;init;MeSSAGe;
  1481.                 footnote(accNET|{に接続準備しました。})},
  1482.             {Yes},{footnote(NET|{に接続準備しました。})});
  1483.         };
  1484.     %netset1 @tail(@getline(BBSpat,1,1),{netset=},{;});
  1485.     %netset2 @tail(@getline(BBSpat,2,1),{netset=},{;});
  1486.     %netset3 @tail(@getline(BBSpat,3,1),{netset=},{;});
  1487.     %netset4 @tail(@getline(BBSpat,4,1),{netset=},{;});
  1488.     %netset5 @tail(@getline(BBSpat,5,1),{netset=},{;});
  1489.     %netset6 @tail(@getline(BBSpat,6,1),{netset=},{;});
  1490.     %netset7 @tail(@getline(BBSpat,7,1),{netset=},{;});
  1491.     %netset8 @tail(@getline(BBSpat,8,1),{netset=},{;});
  1492.     %netset9 @tail(@getline(BBSpat,9,1),{netset=},{;});
  1493.     %netset10 @tail(@getline(BBSpat,10,1),{netset=},{;});
  1494.     %netset11 @tail(@getline(BBSpat,11,1),{netset=},{;});
  1495.     %netset12 @tail(@getline(BBSpat,12,1),{netset=},{;});
  1496.     %netset13 @tail(@getline(BBSpat,13,1),{netset=},{;});
  1497.     %netset14 @tail(@getline(BBSpat,14,1),{netset=},{;});
  1498.     %netset15 @tail(@getline(BBSpat,15,1),{netset=},{;});
  1499.     %netset16 @tail(@getline(BBSpat,16,1),{netset=},{;});
  1500.     %netset17 @tail(@getline(BBSpat,17,1),{netset=},{;});
  1501.     %netset18 @tail(@getline(BBSpat,18,1),{netset=},{;});
  1502.     %netset19 @tail(@getline(BBSpat,19,1),{netset=},{;});
  1503.     select    ({接続するネットを選択して下さい「現在の設定=}|NET|{ネット」},
  1504.     Wtime4,{},{変更しない},{},
  1505.     netset1,{NTsetN(1)},    netset2,{NTsetN(2)},
  1506.     netset3,{NTsetN(3)},    netset4,{NTsetN(4)},
  1507.     netset5,{NTsetN(5)},    netset6,{NTsetN(6)},
  1508.     netset7,{NTsetN(7)},    netset8,{NTsetN(8)},
  1509.     netset9,{NTsetN(9)},    netset10,{NTsetN(10)},
  1510.     netset11,{NTsetN(11)},    netset12,{NTsetN(12)},
  1511.     netset13,{NTsetN(13)},    netset14,{NTsetN(14)},
  1512.     netset15,{NTsetN(15)},    netset16,{NTsetN(16)},
  1513.     netset17,{NTsetN(17)},    netset18,{NTsetN(18)},
  1514.     netset19,{NTsetN(19)}
  1515.     );
  1516.     };
  1517. /*HELPメッセージ表示*/
  1518. %HELP1{<自動環境設定>
  1519.     只今からDORAに同梱してある、SAMPLE.USRファイルに基づいて
  1520.     環境設定を行います。
  1521.     <未設定部>
  1522.     以下の項目については、ユーザー環境に合わせて自力で設定ください。
  1523.     〔ID〕〔ハンドル〕〔パスワード〕〔回線設定〕〔モデムの種類〕
  1524.     〔ネット名〕〔電話番号〕〔みかか距離〕
  1525.     <自由度>
  1526.     SAMPLE.USRファイルに基づいた設定以外の設定にしたい時は、それぞれの
  1527.     設定項目で自由に変更できます。
  1528.     <了解>
  1529.     この画面の左下に有る[了解]ボタンをクリックすると
  1530.     設定画面に移動します。
  1531.     };
  1532. %HLPview{[helpNo]
  1533.     %memono1 @mlast+1;
  1534.     case    (memono1>9,
  1535.         {Yes},
  1536.         {footnote({メモ番号が一杯のためメモを開けません});
  1537.         wait(1);im({});
  1538.         },
  1539.         {No},
  1540.         {CloseAllMemo;madd(memono1,{\n});
  1541.             mclear(memono1);madd(memono1,helpNo)
  1542.         });
  1543.     mopen(memono1,0,21,639,459,{r});
  1544.     loop    ({footnote({了解},{b});
  1545.         waitx();
  1546.         case    (@xtype,
  1547.             101,{footnote({});im({No})},
  1548.             201,{footnote({});im({No})},
  1549.             ,{im({Yes})}
  1550.             );
  1551.         });
  1552.     case    (@mcheck==memono1,
  1553.         {Yes},{mclose(3)},
  1554.         {No},{CloseAllMemo;mopen(memono1);mclose(3)}
  1555.         );
  1556.     };
  1557. /************************************************************************/
  1558. /*                      以下メインモジュール                            */
  1559. /************************************************************************/
  1560. /*    カレントディレクトリセット    */
  1561. %CDIR    @getcdir;
  1562. %CDIR2    @case    (@nochar(CDIR)==3,{Yes},{im(CDIR)},{No},{im(CDIR|{\})});
  1563. /* オートパイロット停止時にPF11で再起動できるように */
  1564. setpf(11,{footnote({DORA Loading ...});}|
  1565.      {setcdir(}|@xc({7b})|CDIR|@xc({7d})|{);}|{#DORAMAIN.PLT});
  1566.  
  1567. /*ドライブ指定*/
  1568. %selDIR    {
  1569.     [MSG]
  1570.     footnote(MSG|{まで移動してキャンセルして下さい});
  1571.     SNDMSG({erande_f.snd});
  1572.     filesel;
  1573.     im(@getcdir);
  1574.     };
  1575. /*    初期設定    */
  1576. SETFILE:=CDIR2|{DORASET.SET};
  1577. case    (@filechk(SETFILE),
  1578.     {Yes},{setcdir(CDIR);#DORASET.SET;SETFILE1:={標準設定}},
  1579.     {No}, {
  1580.         case    (@filechk(CDIR2|{SAMPLE.USR})
  1581.             ,{Yes},
  1582.             {#SAMPLE.USR;HLPview(HELP1)});
  1583.         setcdir(CDIR);#DORASET.PLP}
  1584.     );
  1585. /*    PIFファイルの設定    */
  1586. case    (mopver,{Win31},
  1587.     {case    (@filechk(CDIR2|{DORA.PIF}),
  1588.         {Yes},{compath(CDIR2|{DORA.PIF})}
  1589.         );
  1590.     RecDir({});/*受信ディレクトリーの初期化*/
  1591.     });
  1592. init;
  1593. SaveAllMemo;
  1594. CloseAllMemo;
  1595. TGKFILE:=CDIR2|{DORATGK.SET};
  1596. case    (@filechk(TGKFILE),
  1597.     {Yes},{setcdir(CDIR);#DORATGK.SET;SETFILE2:={標準設定}},
  1598.     {No}, {setcdir(CDIR);#DORATGK.PLP}
  1599.     );
  1600. /*    オープニングメッセージ    */
  1601. %White{display(@xc({1B})|{[37m})};
  1602. %Green{display(@xc({1B})|{[32m})};
  1603. %Blue{display(@xc({1B})|{[36m})};
  1604. display({\n\n\n\n\n\n\n\n\n\n\n\n\n\n});
  1605. footnote({DORA}|VerLev|{初期処理中});
  1606. Green;
  1607. display({\n    オートパイロットDORA}|VerLev|{を開始します\n});
  1608. %MeSSAGe{
  1609.     case(NETname={},{Yes},
  1610.     {display({    ☆}|NET|{-ネットでの処理を表示します。☆\n}|TGK)},
  1611.     {No},{display({    ☆}|NETname|{での処理を表示します。☆\nアクセスナンバ}|
  1612.     {ーは[}|CALL|{]に、メニューへのwaitTimeは[}|REDIALt|{秒]に設定されてます。\n}|    TGK)});
  1613.     footnote({ログファイルは}|LOG|{です。設定は}|NET|{-NETです});
  1614.     setcdir2(CDIR);White;setcdir2(CDIR)
  1615.     };
  1616. MeSSAGe;
  1617. /*    オープニング画面表示    */
  1618. case    (OPENING={No},
  1619.     {No},
  1620.     {
  1621.     case    (@filechk(CDIR2|{DORA.NPB}),
  1622.         {Yes},{naplps(CDIR2|{DORA.NPB});waitx(1);napend
  1623.         });
  1624.     });
  1625. case    (HOSEI={No},
  1626.     {No},
  1627.     {footnote({ネット選択メニュー表示中[「その他の設定」で変更出来ます。]});
  1628.     case (@filechk(CDIR2|{_mopnet.net})||@filechk(CDIR2|{_sample.net}),
  1629.         {Yes},{selectBBS})
  1630.     });
  1631. ClosePort;
  1632. loop    ({
  1633.     SNDMSG    ({erande_f.snd});
  1634.     footnote({処理を選択してください。[選択ネット=}|NET|{ネット]});
  1635.     setcdir(CDIR);
  1636.     select  ({処理を選択してください <<DORA( FAPXもどき) >>},
  1637.          Wtime4*10,{im({Yes})},
  1638.         {      RTBBS-NETと通信を行う      },
  1639.          {napend;setcdir(CDIR);#DORAONLN.PLP;im({Yes})    },
  1640.         {      各種の設定を行う         },
  1641.         {napend;setcdir(CDIR);#DORASET.PLP;init;im({Yes})},
  1642.         {      選択したネットでの処理の設定     },
  1643.         {napend;setcdir(CDIR);#DORATGK.PLP;im({Yes})},
  1644.         {      アクセスパターンの設定      },
  1645.         {napend;SCHG;im({Yes})},
  1646.         {      アクセスネットの選択      },
  1647.         {napend;case (@filechk(CDIR2|{_mopnet.net}),{Yes},{selectBBS},
  1648.         {No},{footnote({アクセスパターンを設定して下さい})});im({Yes})},
  1649.         {      電話料金を計算する  },
  1650.         {napend;case    (@filechk(LOG2|{アクセスdat\CONNECT.DAT}),
  1651.             {Yes},
  1652.             {RYOUKIN},
  1653.             {No},{footnote({みかか代計算の前には、現在選択した}|
  1654.                 {ネットにアクセスする事が必要です});wait(3)
  1655.             });im({Yes})},
  1656.         {      受信ログを読む          },
  1657.         {napend;#DORAVIEW.PLP;im({Yes})},
  1658.         {      受信ログを整理する(RTTLC.EXEを実行する) },
  1659.         {napend;#DORARTTL.PLP;im({Yes})},
  1660.         {      ファイル操作          },
  1661.         {napend;FILEMGR;im({Yes})},
  1662.         {      DORA}|VerLev|{の説明   },
  1663.         {napend;#DORAHELP.PLP;im({Yes})},
  1664.         {   DORAを終了する        },
  1665.         {napend;ClosePort;im({No})    }
  1666.         )
  1667.     });
  1668. Blue;
  1669. RestoreMemo;
  1670. display({\nオートパイロットDORA}|VerLev|{を終了しました\n});
  1671. footnote({}); White;setcdir(CDIR);
  1672. delfile(TEMP2|{_bmaltxt.tmp});
  1673. delfile(TEMP2|{backlog.tmp});